Release notes for REALbasic 3.0 12 February, 2001 REALbasic 3 contains the following new features: (All) ApplicationSupportFolder: this new global method gives you a FolderItem that refers to the Application Support Folder, or nil if that is not available. (All) Arrays: properties can now be declared empty -- e.g., foo(-1) as Integer -- just like local arrays. (All) Edit field: CharPosAtLineNum method added. This lets you find the (1-based) character position of the first character on the given (0-based) line number in a multi-line edit field. The method interface is CharPosAtLineNum(lineNumber as Integer) as Integer. (All) Edit field: LineNumAtCharPos method added. This lets you find the (0-based) line number on which any 1-base character position can be found in a multi-line edit field. The method interface is: LineNumAtCharPos(charPosition as Integer) as Integer. In combination with the ScrollPosition property added in a6, this lets you scroll the edit field to a particular place in the text. (All) Edit field: ScrollPosition property added. This is the 0-based index of the topmost visible line. It is both readable and writable (may be used to scroll the Edit field). (All) Handle: the new Handle property deprecates the existing MacControlHandle property. Any visible win32 control should have a handle. This new property provides identical functionality as that of MacControlHandle, but the name change reflects that it is now implemented in a cross-platform way. (All) Language: arrays can now be declared of size -1 (i.e., empty). (All) Language: global constants can now be used as dimensions in array declarations. (All) List box: ScrollBarHorizontal property added to listboxes. Now horizontal scrolling in a listbox is as easy as setting this value to true. This property is settable in code as well so you can leave it off until its needed. The pagestep value is set the same as the Mac OS Finder's list view (i.e. 18 pixels of overlap) (All) List box: ScrollBarVertical property added to listboxes. Now Vertical scrollbars are optional. You can set this value in code. This can be useful if you want the scrollbar to appear only after you have sufficient number of rows to make it useful. Your Win32 users may expect this. (All) List box: ScrollPosition property added. This is the 0-based index of the topmost visible row. It is both readable and writable (may be used to scroll the list box). (All) List box: ScrollPositionX integer property added to list boxes. You can scroll a list box horizontally by adding a Scroll bar control which modifies this property. This property can be set in the IDE and as such will scroll IDE columns accordingly. NOTE: it is perfectly acceptable to use a negative value here. (All) Pop-up menu: ListIndex is a property that can now be set at design time. (All) PrinterSetup: resolutions higher than 72 dpi supported. New "MaxVerticalResolution" and "MaxHorizontalResolution" properties added. These default to 72; you can change them to the maximum printer resolution you're prepared to handle, or -1 for "highest possible resolution". After calling PageSetupDialog, OpenPrinter, or OpenPrinterDialog, the "VerticalResolution" and "HorizontalResolution" properties will be automatically set to the highest resolution supported by the printer driver, within your specified constraints. Printing will then occur at that resolution. Will not affect existing code. (All) REAL Database: ALTER TABLE command now supported. Syntax: ALTER TABLE ADD [NOT NULL] (All) REAL Database: columns can now be added to a database after a table is created (All) Runtime function: this new function provides information about the current state of the runtime environment, for aid in debugging. The current functions are: Runtime.ObjectCount as Integer: returns the current number of objects in existence; Runtime.ObjectClass(Index as Integer) as String: returns the class of the indicated object, where Index is a number >= 0 and < ObjectCount; Runtime.ObjectRefs(idx as Integer) as Integer: returns how many references there are to the indicated object; Runtime.ObjectID(idx as Integer) as Integer: returns a unique identifier for the indicated object; no other object in existence at the same time will have the same ID.; Runtime.MemoryUsed as Integer: returns the total amount of memory being used by allocated objects. (All) Serial Number: REALbasic is now using a new serialization scheme, it's no longer necessary to have previous version of REALbasic installed to upgrade (you must know your previous serial numner, however). (All) Sprite surface: attach method allows you to attach custom Sprite subclass objects. (All) Sprite surface: bit-depths of 8, 16, or 32-bit color now available, rather than 8-bit only. (All) Sprite surface: note -- now an internal plug-in, which is included in compiled applications only when used. (All) Sprite surface: resizable on the fly (use Left/Top/Width/Height). (All) Sprite surface: Stop and Update methods allow for more control over running of the Sprite surface. (All) Sprite surface: window mode -- now runs within a window. New Window properties allow for full-screen mode. (All) String function: Replace -- faster by about 22% in some cases. (All) String function: ReplaceAll -- faster by about 50% in some cases. (All) Window class: FullScreen property added. When this is set to true, the window resizes itself to cover the entire screen (in the case of multiple monitors, it fits the one which contains the greatest portion of the window). The Left, Top, Width, and Height properties are changed to reflect the new window position, and cannot be changed while FullScreen is true. Note that in full-screen mode, a window may be partially covered by the menu bar (under Mac OS). This property defaults to False. (All) Window class: MenuBarVisible property added. When this is set to false, the menu bar will be hidden whenever this window is the front most (non-floating) window. The menu bar will be shown again when another window (with MenuBarVisible=true) becomes front most, or when the application is put into the background. This property defaults to True, and works nicely with FullScreen. (Car) Constants: TargetCarbon built-in constant is now available. (Car) Help Tags: this new property has been added to the Control class. It is used for Carbon and Mac OS X help tags, as well as Win32 tool tips. (IDE) About Box: Layout and Graphics completely redone. (IDE) AppleScript: Scriptable IDE -- build command added; builds are now scriptable and recordable. See Developers Guide for details. (IDE) AppleScript: Scriptable IDE -- Build dialog now scriptable and recordable, with the following: Boolean flag "modified"; Boolean flag "buildMac68k"; Boolean flag "buildMacPPC"; Boolean flag "buildMacCarbon"; Boolean flag "buildWin32"; String property "buildMacName"; String property "buildWinName" Descriptions are available in the AppleScript dictionary (viewable with your favorite script editor)." (IDE) AppleScript: Scriptable IDE -- the Open, Save, and Quit commands are now scriptable and recordable. (IDE) AutoSave: If REALbasic exits abnormally a user will be prompted to restore their project when next using REALbasic. Saves happen directly before Running and Building. (IDE) Build dialog: Target Types -- now allows building of any target type (68k, PPC, Carbon, Win32). (IDE) Code Editor: autocomplete pop-up now wraps around: pressing the up arrow key when the top item is selected jumps to the bottom, and vice-versa. (Works in the online help too.) (IDE) Code Editor: Autocompletion -- various enhancements have been made to the type-ahead autocompletion function: now includes global methods, variables, and constants; now considers user-written subroutine names only at the start of a line, and function names only after the start of a line; plug-in classes now provide autocompletion to local variables, just like locals which refer to built-in types; now includes menu items; includes True" and "False" keywords; now recognizes the data type of global properties and methods, and correctly accounts for methods which can be both read and written (like Listbox.ScrollPosition); private methods and properties are now considered only when accessible (e.g., within the defining class or some subclass); Application method now resolves to your custom application class, if any. (IDE) Code editor: Autocompletion multiple choice -- pressing the Tab key while there is more than one autocompletion possibility (as indicated by "..." after the cursor) now pops up a list of choices. Use the up and down arrow keys to highlight a choice. Select a choice with Return, Enter, Right Arrow, Tab, or by clicking. Cancel with the Esc, Left Arrow, Delete, or Clear key. Known issue: if there are more options than can fit on the screen, only the first screen full is displayed. (IDE) Code editor: Autocompletion now smarter in several ways; it knows more words and makes better use of context clues, and also does partial autocompletion when full autocompletion is not possible. For example, try x = bit" (going for "BitwiseAnd" or "BitwiseOr"). Words considered for autocompletion include local variables, class properties and methods, built-in functions and classes, user-defined classes, plug-in classes and methods, and other built-in keywords and constants. Context clues are used, for example, to suggest subroutine names only at the beginning of a line, and function names only after the beginning of a line. The only major category of valid words not yet considered are user-defined global methods and properties. If you find any other oversights, please let us know! (IDE) Code Editor: Autocompletion now understands array methods (Append, Remove, etc.) for local arrays and array properties. (IDE) Code Editor: Command-clicking a word in the source editor now inserts that word at the insertion point cursor (flashing vertical line). (IDE) Code Editor: Copied text and text clippings of multi-line selections now include indentation. (IDE) Code editor: Copy-Click/one-click insert of browser item name -- you can now option-click on an item in the browser on the left, to insert that item into the source code. E.g., to insert the name of a property or method without typing it, just option-click that property or method in the list. (This extends the existing function of option-clicking words and expressions in the source code.) (IDE) Code Editor: Double-click selection now works for floating-point, hex, binary, and octal numbers. (IDE) Code Editor: Double-clicking a parenthesis now selects the entire parenthesized text (both parentheses and everything between them). (IDE) Code Editor: Double-clicking on a quotation mark now selects the entire quoted string (both quotation marks and everything between them). (IDE) Code Editor: Horizontal scroll bar in code editor now adjusts to actual range of text. (IDE) Code editor: Menu Item "Copy and Append" allows you to copy text and append it to previously existing text in the clipboard. This is very useful if you want to copy several pieces of code to one central location. The item appears in the edit menu if you hold down the option key. Option-Command-C is the shortcut. (IDE) Code editor: Menu Item "Cut and Append" allows you to cut text and append it to previously existing text in the clipboard. This is very useful if you want to move several pieces of code to one central location. The item appears in the edit menu if you hold down the option key. Option-Command-X is the shortcut. (IDE) Code Editor: navigation buttons now update the selection in the list box on the left, as well as the source code area on the right when you use the "Forward" and "Back" navigation buttons. (IDE) Code Editor: new navigation buttons which perform the following functions: bring Window editor to the front (the opposite of double-clicking a control -- note: option-Tab is a keyboard shortcut for this); show/hide empty methods and handlers; go to previous method (i.e., the one previously accessed); go to next method (the one more recently accessed) The latter two are like the back/forward buttons in a web browser. Please note that this feature is just a prototype and may not appear in REALbasic 3.0. (IDE) Code Editor: pasting of indented code into the Code Editor now ignores leading white space so auto indentation is correct. (IDE) Code Editor: Property, Method, and New Event dialogs now support autocompletion (though they do not support the pop-up list of choices). (IDE) Code Editor: Show Empty Methods button no longer collapses controls in the code editor list box. (IDE) Code Editor: Syntax coloring has been extended to differentiate literal numbers and literal strings from other code. (IDE) Code Editor: triple-clicking now selects an entire line. (IDE) Code Protection: substantially changed and improved. You can now encrypt (protect) or decrypt (unprotect) a module while it's in your project, using a command in the Edit menu or in the contextual menu within the project window. When encrypting a module, you now supply a password which can be used to decrypt it later. At the same time, you may check an "allow conversion to 2.1 format" checkbox -- this is significant because the 2.1 file format uses much weaker encryption, but is necessary if your code is to be used with REALbasic 2.1. NOTE: only modules exported in the "standard" (version 3) format can contain a password; 2.1 export files lose the password and cannot be decrypted. NOTE: Don't forget your password. (IDE) Constants: value is now shown in browser along with name and icon. (IDE) Debugger: ArrayViewer -- All of the benefits of the new Object viewer are now part of the ArrayViewer as well. (IDE) Debugger: Double local variables can now be changed in the debugger just like other basic types. (IDE) Debugger: Object viewer -- much more powerful: it's modeless - you can keep the Object viewer open while running and stepping through your code.; It's resizable - so you can see the entire length of a folderitem, or other long items.; It displays its name and type - makes it much easier to identify which Object viewer to pay attention to.; Only one is created per object - see object's relationships with each other.; Object viewer remembers its position - it opens in its last position on your screen.; Object viewer shares its Object's persistence - Object viewer windows disappear when the object they are referring to is garbage collected - Use this to check for memory leaks (If the Object viewer for that object is still open you may have a leak.) (IDE) Debugger: Stepping skips lines with comments or spaces only unless a breakpoint is set on such a line. (IDE) Default Stationery: upon launch or use of the "New" command, REALbasic looks for a stationery file called "Default New Project" in the Stationery folder. If found, this is loaded (as Untitled) instead of the built-in default project. (IDE) Exported Code: may be saved in either 2.1 or standard (version 3) format. If you just drag a module to the Finder, it's saved in standard format, but by using the Export menu command, you can choose either standard or Version 2.1 format. (IDE) File Types: pop-up list of suggested file types now includes three special types; the first applies to all platforms, while the latter two apply only to Mac OS. The new types are: "special/any", creator '????', type '????'; "special/folder", creator 'MACS', type 'fold'; "special/disk", creator 'MACS', type 'disk' (IDE) Floating point values' display in the IDE will now changes intelligently when the window size is changed. To see more precision just resize the Properties Window, Object viewer, or ArrayViewer. (IDE) Keyboard Shortcut: Debugger -- adding/clearing a breakpoint now has a keyboard shortcut, Cmd-B. (IDE) Keyboard Shortcut: Online Reference -- now accessible with the Help key (equivalent to command-1). (IDE) List box: font, font size, and font style now displays in the Window editor. (IDE) List box: HeadingIndex can now be set from the properties window and it will a visible effect on the list box when set. (IDE) List box: headings can now be replaced by one call. Use an index of -1 and set them to a tab delimited string. E.g. listBox1.heading(-1) = Fred" + chr(9) + "Tom" + chr(9) + "Harold"." (IDE) List box: Initial Value text now displays in the IDE. (IDE) List box: is now more interactive in the design environment. The following properties now have a visible effect on the list box in the design environment: hasHeading, scrollPositionX, HeadingIndex, Initial Value (only for list boxes with Headings). These next properties improved in their interactivity: enabled, columnCount, columnWidth. (IDE) List box: ScrollPosition is now settable from the IDE. Use this to test how the property behaves. (IDE) Menu: Save is only enabled when the project has changed. You can use this to help you verify that the project is in fact saved in its current state. (IDE) Menus: Keyboard shortcut for Save As... menu item added (shift-command-S) (IDE) Movie Player: Appearance in the design environment and in running applications now more similar. Controllers and badges display when specified, and the control looks visually distinct from Canvases even when no controller is visible (it's now a deep blue rectangle with a movie icon in the center). (IDE) ObjectViewer/ArrayViewer: now appear in the window menu (as appropriate) (IDE) Online Reference: default mode can be changed from "Search" to "Go" via a new Preferences option. (IDE) Online Reference: go to -- type the name of the class, method, or keyword you're looking into the topic field and press Return or click Go to quickly find an entry. (IDE) Online Reference: navigation buttons added to give you the ability to step forward and back through recently accessed items, or return to the introduction. (IDE) Online reference: position and state are now remembered between REALbasic sessions. (IDE) Online Reference: search -- type a word that isn't in the topic list (or add a space at the end of the word) or holding the Option key to make the "Search" button appear. Then press return or click Search. Search results are shown in the list on the left. Searches are done with whole-word, case-insensitive matching. Currently only the first word in the search field is used; any subsequent words are ignored. Click the Theme or Alpha buttons to return to the full topic list. (IDE) Online Reference: Searching with the theme bevel button depressed now expands the theme and selects the relevant item instead of selecting the theme. (IDE) Project items: Finding External Files -- Now REALbasic searches smarter when looking for external files. it now always looks in the folder that contains the project (if available). It also looks in the folders of any previously found items, including from other projects in the same REALbasic session. This last bit was designed for those of you that like to store common pictures, sounds etc. between projects (such as icons you use in every project). If you ever move a common resource folder just open all the affected projects and save them. You will only need to specify the common items once. (IDE) Project Window: contextual menu support added -- control-clicking project items now pops up a contextual menu of things you can do to those items. The options vary depending on the type of the item, but may include: Edit - open the item for editing within REALbasic.; Delete - remove the item from the project.; View - view the item within REALbasic.; Play - play the sound.; Open File - for items stored externally, open the file as if double-clicked in the Finder.; Reveal in Finder - open the file's folder in the Finder and highlight the file.; File Path - a hierarchical menu allowing you to open any folder enclosing the file.; Relocate - choose a new external file to associate with the item. (IDE) Project Window: Drag and drop folders from the project window to the finder, and vice versa. (IDE) Project Window: external editing -- double-clicking items which can't be edited within REALbasic (e.g., pictures and scripts) now opens them externally, as if you'd double-clicked them in the finder. (IDE) Project Window: keyboard shortcut -- when an item is selected, you can press the Tab key to jump to the Name field in the Properties window to change the item's name (even if the Properties window was previously hidden). (IDE) Project Window: now displays a little padlock badge on protected modules. (This is one part of a larger change to the interface for protected items.) (IDE) Properties Window: Negative numbers now appear in red. (IDE) Registration Dialogs: Redone for version 3. (IDE) Registration: If REALbasic is already in use on the network, you are now given the option to re-register your copy. (IDE) Registration: REALbasic now ignores return characters that proceeding or following anything in the registration dialog, and removes them for the serial number field and the previous serial number field. This is useful if you accidently copy the return char when registering REALbasic. (IDE) Registration: REALbasic now uppercases all text that is entered into the Serial number field and the previous serial number field and doesn't allow you to type spaces. (IDE) Scroll Bar: Appearance in the design environment and in running applications now more similar. The following properties of scroll bars are now interactive in the design environment: Value, PageStep, Minimum and Maximum. (IDE) Slider: Appearance in the design environment and in running applications now more similar. The following properties of sliders are now interactive in the design environment: Value, Minimum and Maximum. (IDE) Stationery: create stationery pads when saving a file. Do this by using the Stationery Option" command in the Navigation Services pop-up menu, or if you don't have Navigation Services, click the "Stationery" checkbox in the Save As dialog. (IDE) Tool bar: balloon help now provided for plugin controls. (IDE) Tool bar: separators visually divide the controls into several groups: decorations at the top, input/output controls in the middle, invisible controls third, and plugin controls at the bottom. (IDE) Tool bar: tool bar has new look and feel. Functionality should be mostly the same, but you'll note that some controls are available in two versions (e.g., a vertical and horizontal scrollbar). (IDE) Toolbar: may be switched between vertical and horizontal by option-clicking the close box. (IDE) Toolbar: mouse-over and mouse-down colors are now taken from the Appearance Manager settings (the "Variation" color); requires Appearance Manager 1.1 or later. (IDE) Viewers: Array viewers now have a Pop-up for viewing specific object properties either side by side or as the whole element. (IDE) Window Editor: Edit field background and foreground colors now display properly in the IDE. (IDE) Window Editor: Edit field with the password property set displays bullets instead of the text in the IDE. (IDE) XML Export/Import: lengthy XML conversions show watch cursor. (IDE) XML Export: projects can now be exported to the new XML format by using the "Save As" command, then choosing "XML" from the Format pop-up menu. When you choose XML format, you are really doing an export, not a save; the project stays associated with its original file location. Finally, note that you may need to increase the memory allotted to REALbasic when using XML export. (IDE) XML Export: strings containing ASCII values less than 32 are now represented with a special "" tag, enclosing the hexadecimal encoding of the entire string. (IDE) XML Import: projects can now be imported from XML via the normal "Open" file dialog. All text files will now show up in the Open dialog, but only those which contain proper XML data can actually be read. If the read is successful, a new project called "SomeXMLFile (Converted)" will be created, where "SomeXMLFile" was the name of the XML file. Finally, note that you may need to increase the memory alloted to REALbasic when using XML import. The AppleScript syntax is the same as for opening any other file ('tell application "REALbasic" to open someFile'). (Mac) AutoDeactivate: this new Boolean control property, true by default, allows you to control whether a control should be deactivated (on Mac OS) when the window is deactivated. (Mac) Balloon Help: when one help message (enabled or disabled) is not available, the other is shown instead. This makes common work arounds (putting the same text in both help messages, or putting something in the enabled help even for controls which are always disabled) unnecessary (though they will still work). (Mac) Edit field: Multi-Line edit fields have improved performance when setting the text property. (Mac) Folder Properties: when a FolderItem now refers to an actual folder (rather than a file), the "MacType" property now returns "fold" and the "MacCreator" value is "MACS" (instead of empty strings). In addition, the "Type" property will now return a matching file type, if you have one defined. (OSX) Plug-in support: REALRegisterEventFilter now works for Carbon. Note that this has not yet been thoroughly tested; please try it and let us know if it works for you (3b2). (OSX) Project window: close button displays a dot when the project has changed. Note: this feature is not present in the Public Beta of Mac OS X (nor in previous versions of the Mac OS). (OSX) QuitMenuItem: when running under Mac OS X, a menu item of class QuitMenuItem will be mapped to the special quit command in the application menu. You can still set, get, and change the text of this item, but other changes (such as the command key shortcut) have no effect. Under Classic Mac OS or or Win32, your QuitMenuItem stays put and behaves as it always has. (OSX) Shell class: used to execute UNIX shell commands and get the results. It has a single method called "Execute" which executes a one-line UNIX command. This causes two properties on the Shell object to change: ErrorCode, which is a system-supplied error code or 0 for no error; and Result, which is a string containing the output of the command. (Win) Accelerator Keys: PushButtons, BevelButtons, Checkboxes, RadioButtons, and Tab Panels now support accelerator keys. Accelerator keys (or short cut keys) are underlined under Windows. To register a key as an accelerator key, preceed the key with an ampersand, i.e. the caption "Go &Home" for a PushButton registers the 'H' key as an accelerator key. Pressing ALT+H on Windows will trigger the Action event of the PushButton. (Win) Screen and ScreenCount: Now support multiple monitor Win32 systems. Multiple monitors is only available on systems that are Win98/Win2k or newer. (Win) Shell class: execute DOS shell commands and get the results. It has a single method called "Execute" which executes a one-line DOS command. This causes two properties on the Shell object to change: ErrorCode, which is a system-supplied error code or 0 for no error; and Result, which is a string containing the output of the command. A "TimeOut" property was added, which is an integer data type that specifies how long (in milliseconds) a process can run before it is automatically terminated. A value of -1 means the process can run indefinitely. This property, currently, only applies to Windows (not needed on Mac OS X). The default value for "TimeOut" is 2000, or 2 seconds. (Win) Sliders: now appear as sliders in Win32 and not as scroll bars. (Win) Tool tips: Windows controls now support tool tips. Assign some text to the HelpTag property of a control, and leave your mouse pointer over a control to display it. This release contains the following improvements to previously existing features: (All) List box: Reduced flicker for list boxes when using horizontal scrolling. (IDE) Code Editor: flicker seen when adding code to a new method while in "Hide Empty Items" mode has been reduced. (IDE) Errors: REALbasic now reports a better error message when builds fail as a result of passing floating point values by ref. (IDE) Properties window: improved look under Mac OS X (Aqua). (Mac) Listbox: improved look under Mac OS X (Aqua). (Mac) Plug-in support: REALRegisterEventFilter now allows you to receive event types which do not go through our usual queue, such as updateEvt, osEvt, and others which we may ignore. Two caveats: first, these may appear out of order relative to events which go through our queue; second, some events (like mouseUp) appear only under certain circumstances (since they may be filtered directly by the Event Manager). This release contains the following optimizations for improved performance: (All) InStr: now about 30% faster. (All) InStrB: now about 25% faster for small searches; large searches scale substantially better since a different algorithm is used. (All) NthField: now about 50% faster. (All) Object destruction: linked objects destruction algorithm substantially improved; it is now both safer and faster. Previously, releasing the head of a long chain of objects could result in a crash (stack overflow). This is no longer possible; any chain of objects which fit into memory in the first place can be safely deallocated. (IDE) Code Editor: typing in very long methods now considerably more responsive (only recalculates the vertical scrollbar when the number of source code lines has actually changed). (IDE) Properties Window: fills values in more quickly (most apparent on slower machines). (Mac) CPU Usage: REALbasic and REALbasic-built applications no longer appear to consume most of the CPU cycles even when idle; they now "sleep" up to 1/3 second in between events. This applies even when there are active timers, but does NOT apply when there are active threads (threads use CPU cycles as always). Here are some tips for getting the most out of this new release: (All) Listbox: If you want miniature scrollbars or scrollbars that leave room for status bars or buttons just set ScrollBarVertical to false and ScrollBarHorizontal to false and add your own scrollbars and tie their value properties to ScrollPosition and ScrollPositionX respectively. (Car) Control.BalloonHelp: if you provide both a HelpTag and a BalloonHelp (or DisabledBalloonHelp) value for a control, users under Carbon or OS X will be able to switch from the short help tag to the longer balloon help by pressing the command key. (IDE) Project items: Finding External Files -- In the very rare event that REALbasic guesses the incorrect external file for your sound, picture etc. just control click on the item and choose Relocate. You will then be able to correct REALbasic's incorrect assumption. (IDE) Workflow: quickly create, name, and edit a new class by using the New Class command, hit Tab, type the class name, press return to accept, and press return again to open the code editor. Works for modules and interfaces too. Here are some notes to keep in mind while using this release: (All) Sprite surface: may need more RAM now due to higher bit depth. Rough estimate of the RAM needed for the surface, not counting sprites, is: (depth/8) * width * height + (depth/8) * (width+128) * (height+128) (IDE) Sprite surface: new features not available in older versions. Using the new Sprite surface features will result in compiler errors if you attempt to compile the project with an earlier version of the IDE. This release contains the following changes to behavior: (All) Drag and Drop: dropping now supported by most controls. (All) Edit Field: cursor and scroll position now moved to the top of the edit field rather than the bottom when a value is assigned to EditField.text. (All) Language: obsolete keywords "of", "var", and "#bad" removed." (All) List box: Adding a row in a listbox now commits any edits before the add. This was done to be consistent with the InsertRow and RemoveRow bug fixes. (All) List box: Column widths are now always what the user specifies (i.e. the last column doesn't grow to size of the rest of the list box. Absent of any column specifications the headers will be divided evenly. If there are less column widths specified than the total number of columns the remaining columns will be sized the same as the last specified column. Header End caps are now added for any additional unused space if headers are used. Header end caps will do nothing when clicked. (All) Pop-up Menu: ListIndex is now 0 by default. (All) Sprite surface: "ClickToClose" changed to "ClickToStop". The old "ClickToClose" property is still available for use in code, but it's deprecated (so use ClickToStop instead). (All) Timers: periods of less than or equal to 0 now default to a period of 1 millisecond. (IDE) Auto Restore: Now remembers the name of your old project. The name of the project after a restore will be "MyProject (Restore)" if your project was named "MyProject"." (IDE) Auto Restore: The backup file is now stored in the new file format. This allows REALbasic to more fully restore your settings to a pre-crash state. (IDE) Autocomplete pop-up: choices now appear in alphabetical order. (IDE) Balloon Help: About REALbasic... menu item is now available. (IDE) Build dialog and Editor Settings dialog have been adjusted slightly to look better under both Aqua and Platinum. (IDE) Build Dialog: Compress checkbox no longer enabled for Carbon builds. (IDE) Build Dialog: Now is much more interactive. Options are enabled and disabled based on selected checkboxes. (IDE) Carbon Builds: an additional 512k of memory is added to Carbon built applications. (IDE) Code Editor: Add/Remove Comments behavior improved (it's now reversible, existing comments are retained and persist, and it leaves the affected lines selected). (IDE) Code editor: default width increased by 144 pixels. (IDE) Code Editor: double-click-and-drag behavior now matches Mac OS standard. (IDE) Code editor: Hide Empty Methods mode has changed slightly; you may now delete the contents of a method or event handler without losing access to it in the source pane. (IDE) Code editor: Navigation Buttons -- constants no longer hidden by Hide Empty Methods button. (IDE) Code editor: scrolls all the way to the left when the cursor is placed on the first character of a line. (IDE) Database Editor: dialogs used for editing database schema has been changed for clarity and ease of use. Functionality remains the same and depends on the capabilities of the database type. (IDE) Database plug-ins are now external rather than internal. The database plug-ins are: CSV Database Plug-in, OpenBase Database Plug-in, PostgreSQL, DBF Database Plug-in, OracleOCI 7.1 Plug-in, ODBC Database Plug-in, dtfSQL Database Plug-in, Assorted 4D Plug-ins (6.0, 6.5, and 6.7 in ADSP and TCP/IP flavors) (IDE) Default Window Position: adjusted so it doesn't overlap the toolbar in the toolbar's default position. (Note: this only affects new projects, and only as seen in the IDE.) (IDE) Dialogs for editing properties, methods, and events are now movable Modal. (IDE) Icons: updated for more modern appearance. (IDE) IDE Memory Allocation: increased from 5500K to 8192K (but minimum allocation remains 4500K). (IDE) Language Reference: Window retitled "Language Reference" (IDE) License Agreement Dialog readied for localization. (IDE) List box: horizontal scrollbar now uses 16 for the linestep value, as the finder does. (IDE) List box: properties window -- all scrolling properties are grouped together. (IDE) List box: The default header now is set to the column number only -- instead of "Field1" it's "0"" (IDE) List box: You must use a space if you want an empty header, empty strings will use the default header: ListBox1.heading(-1) = "" sets all headers of listbox1 to their defaults.; ListBox1.heading(5) = "" sets column 5's heading to its default heading; listbox1.heading(5) = " " sets column 5's heading to empty. (IDE) Menu item: "Editor Settings" has been renamed "Preferences". (IDE) Menu Item: Cut And Append's keyboard shortcut has been re-assigned to Shift-Cmd-X to more closely pair with "Copy and Append's new keyboard shortcut." (IDE) Menu Shortcut: The Build Application menu shortcut has been changed from Cmd-M to Cmd-Shift-M to accomodate Mac OS X. Mac OS X defines Cmd-M as minimize. (IDE) Menu: "Reference" re-labeled "Language Reference" (IDE) Menus: Adding a method, constant, property or event is no longer prohibited during a debug session. REALbasic used to have this capability before Jun 30 2000. (IDE) Menus: Show Locals menu renamed to Show Variables (and similar for "Hide Locals"). (IDE) Menus: Show/Hide Variables and Show/Hide Stack menu items are now in the Window menu (IDE) Movie player: displays a lighter blue background color to match the "no signal" color on new TV's and the displays the Movie player icon from the tool bar. (IDE) Movie Player: new toolbar icon at its center instead of the old one. (IDE) Navigation Buttons: Hide Empty Methods button no longer hides properties. (IDE) Online Reference: after a search, if there is an exact topic match, that topic selected first (rather than whatever topic happens to be at the top of the search results). (IDE) Online Reference: now does "Search" by default instead of "Go" (default mode can be changed from "Search" to "Go" via a new Preferences option). (IDE) Online Reference: Pressing the Go button after a successful search for an item that is not in the search list will display the item in the themes list. (IDE) Online Reference: topic is highlighted in the topics list on the left side of the window whenever a topic is changed, whether by clicking a hyperlink or typing it in the new topic field. (IDE) Pop-up menu: InitialValue, and ListIndex property in the Window Editor now accurately reflected. For example if you have "Zero, One, Two, Three" as Initial Values and 2 as the ListIndex of a selected Pop-up, the Pop-up will display the word "Two" in the IDE window editor. (IDE) Preferences: Layout changed slightly to accomodate string change "Online Help" -> "Language Reference" (IDE) Preferences: REALbasic now loads and saves its preferences in the file "REALbasic3 Prefs". REALbasic will read your old prefs the first time it is run, so that you don't have to re-specify all your preferences. (IDE) Project file format: REALbasic 3 has an all new file format. For alpha releases you can choose whether to use the new format or the version 2.1.2 format:; New projects have the new ("Standard Project") format by default, you can choose whether to use that or the 2.1.2 format when you save.; Use the "Save As" command, to choose between Standard Project format and the older one.; Projects are saved in the same format in which they are opened. (IDE) Project Window: list is now drawn in 10-point Geneva, and items which are stored external to the project file are labelled in italics. (IDE) Project Window: when you create a new class, module, or interface, the item is simply selected in the project window rather than opening the Code Editor immediately. (IDE) Properties Window: cosmetic improvements, including a better look under Aqua. (IDE) PushButton: now 69 pixels by default, per the Aqua standard (looks OK on Classic/Win32 too). (IDE) Registration: Now gives explicit feedback when you register as a pro customer. REALbasic already gave feedback in other cases. (IDE) Shared Libraries: icon now have a more appropriate appearance in the Project window. (IDE) Toolbar: flip between horizontal and vertical toolbars by clicking the zoom box, rather than by option-clicking the close box. (IDE) Various Dialogs: adjusted to have a more proper appearance under Aqua (Mac OS X). (IDE) Viewers: window titles for Object viewers and Array viewers are now more consistent with REALbasic syntax. (IDE) Window Editor: Alignment guides are now darker (and so easier to see under OS X). (IDE) Window Editor: selection handles are now drawn even when multiple controls are selected (for improved visibility). (IDE) Windows: new windows are document windows by default instead of a modal ones, with the name Window# instead of Dialog#. (IDE) XML Export: XML files now have a creator code of REALbasic rather than BBEdit. (Mac) CompressPPC: this option has been removed per Apple's request. (Mac) Menu Text: ampersand symbols will display only if they are preceded by another ampersand symbol. This is to make the Windows and Mac platforms behave consistently. Note: old projects with single ampersands will have to be updated. (Mac) PushButtons, BevelButtons, Checkboxes, RadioButtons, Tab Panels and Groupboxes: The caption of these controls that contain ampersand symbols will display only if they are preceded by another ampersand symbol. This is to make the Windows and Mac platforms behave consistently. Note: old projects with single ampersands will have to be updated. (OSX) Menu item: "Editor Settings" (now "Preferences") appears in the Application menu on Mac OS X. (Win) ApplicationSupportFolder: now returns the Windows directory folder. (Win) Control Activation: controls no longer deactivate when a window is deactivated in Win32, per normal Win32 application behavior. (Win) Edit Field: point size was reduced slightly to match the point size of other controls. This fixes the bug when editing a cell in a list box, the edit field text does not completely fit inside the cell, consequently some of the text was not visible. (Win) Edit fields: background color is grayed out when the edit field is disabled, (unless you've modified the Back color). With unstyled Edit fields, the text is also grayed out. (Win) MsgBox: icon more consistent with the Mac MsgBox. (Win) Windows: fixed problem with windows disappearing behind the main window. Reverted to the previous behavior as this fix broke other things. The following bugs were fixed in this release: (68k) List box: Scroll bars now appear in 68k applications if their properties are turned on in the IDE. (All) Bevel Button: Fixed a bug which caused rare crashes when destroying a bevel button containing an icon. (Could possibly apply in other circumstances, too.) (All) Bevel Buttons: Enabled setting in the IDE now reflected by the running application. There was a bug which caused these to always begin enabled when run. (All) Binding: Memory leak fixed. (All) Command Keys: now pass through to the KeyDown event handler(s) if they don't match any enabled menu item. (All) Compiler: oversized integer literals (greater than 2147483647 or less than -2147483647) are now parsed as doubles, even without a decimal point. Previously, oversized integer literals were interpreted as a completely different number (due to high-byte truncation). (All) Database: PostgreSQL connectivity -- now accessible both from classic Mac OS and Win32. (All) Database: closing a database occasionally crashed -- fixed. (All) Database: PostgreSQL Field Schema -- previously only worked if the table name was given in lower case; now works in a case-insensitive manner. (All) Database: PostgreSQL Field schema: char(n) fields (fixed-length character fields) length is now reported as n (the declared field length) instead of -1. (All) Database: PostgreSQL Field schema: IsPrimary column returns as a Boolean value ("false") rather than an integer ("0"). Note that IsPrimary is always false for PostgreSQL databases. (All) Database: PostgreSQL Field schema: reports 35 different data types (compared to previous 8). (All) DatabaseCursorField.DateValue: assignments to this property store the time as well as the date, as with DatabaseRecords. When getting a value, the resulting Date object may now contain a time as well as a date. For fields of type "Date", the time will be 00:00:00 (midnight); and for fields of type "Time", the date will be January 1, 0001. Fields of type "TimeStamp" contain valid data for both the date and time (and this is now supported). (All) DatabaseRecord.DateColumn: assignments to this property now store the time as well as the date, to support the SQL "TimeStamp" and "Time" field types (as well as "Date"). Note that if the date part is January 1, 0001, then this is converts to SQL as just a time ("18:54:00"), whereas if the date is anything else, it converts to SQL in full form ("2000-5-30 18:54:00"). (All) Dynamic Controls: Memory leak fixed both within the IDE and in built applications. (All) FolderItem.Type: now reports the correct type even when a wildcard type ("????") is among the file types defined in the project settings. (All) List box: alignment -- left hand margin of the list box no longer overwritten when the alignment isn't left and the data is too long to fit. (All) List box: clicks in the disabled scroll bar of a list box no longer fall through to select a row. (All) List box: Deleting a row in a list box now commits any edits before the remove occurs. This prevents the editable cell from clobbering the contents of the wrong cell. (All) List box: Deleting rows in a list box with horizontal scrollbars no longer produces screen trash in the bottom of the listbox. (All) List box: Editable cells in listboxes now resize immediately when listboxes are resized, moved scrolled, or scrollbars are added or removed. (All) List box: editable cells no longer overwrite their boundaries (All) List box: Inserting a row in a list box now commits any edits before the insert. This prevents the editable cell from clobbering the contents of the wrong cell. (All) List box: No longer scrolls 1 pixel horizontally in cases where it shouldn't scroll at all. (All) List box: Resorting a list box now commits any edits before the resort. This prevents the editable cell from clobbering the contents of the wrong cell. (All) List box: Right, Center, and Decimal aligned cells of listboxes now truncate their text based on cell size (left aligned was working previously) Decimal aligned text truncates by dropping digits after the decimal, and by adding "..." when dropping digits before the decimal place. (All) Listbox: Fixed a problem that allowed you to add a horizontal or vertical scrollbar more than once. Now any attempt to do so will be ignored. (All) Pop-up menu: RowTags memory leak fixed. (All) Pop-up menus: RowTag method no longer crashes when given an invalid row number. (All) PostgreSQL dates: field types Date, Time, and TimeStamp are now properly supported; use the DateColumn and DateValue accessors for a date representation of this data, or use StringValue to get a human-readable date and/or time. (All) ReplaceAll: now correctly returns the sourceString when the oldString is "". (All) SpriteSurface: fixed bug which caused a crash if the SpriteSurface had code in its Collision event, but no sprites in the surface had a nonzero Group. (All) Stability: a type of crash caused by destructor recursion has been fixed. (All) Stability: fixed a bug which caused occasional crashes when a plug-in control (e.g. a BevelButton) closed its own window. (All) Tab Panels: Text properties can now be set without causing a compile-time error: TextFont, TextSize, Bold, Italic, and Underline. (All) Timer: timer reliability improved; timers can no longer get stuck when the system tick count wraps around. (All) Window activation: the REALbasic event "deactivate" occurs before the automatic control deactivation process introduced in a6 so that the old work around of storing the enabled state of controls in the Deactivate event still works. (All) Window.DrawInto: now works correctly for all control types, with the following exceptions: Movie player: does not draw (draws a frame with a large X" instead).; Sprite surface: when drawn into another window, the position is wrong and in fact relates to the position of its original window; still works when printed, however. (Car) BevelButton, Disclosure Triangle, and several other controls: fixed bug which caused these to crash in Carbon applications under MacOS 8/9 since 3.0a08 or so. (Car) Command-Period: command-period now works in Carbon applications or in the Carbon IDE. (Car) Compiling: basic.cpp Assertion failure while building Carbon applications no longer occurs. (Car) FolderItem: a number of methods (e.g. Launch) which previously did nothing under Carbon have now been implemented. (Car) IDE: Contextual Menus now work under Carbon. (Car) List box: checkboxes within a list box no longer get stuck in the checked state in Carbon. (Car) Menus: Apple Menu Items no longer appear twice in the Apple Menu within the Carbon IDE, and built applications. (Car) Project resources: resources can now be added to a project in the Carbon IDE, and used as normal in Carbon builds. (Car) Project window: Relocate contextual menu command -- now works correctly with resources, scripts, and XCMDs. (Car) Runtime Printing: now works in the Carbon IDE and Carbon builds. Note: the SetupString property of the PrinterSetup class has changed format for Carbon. This format is internal and undocumented; don't count on it having any particular structure. (Car) Source Printing: now works in the Carbon version of the IDE. (Car) TargetCarbon: the Carbon version of REALbasic now compiles as Carbon when running in the IDE; you can verify this by checking the TargetCarbon built-in constant. (Car) Threads: now work in the Carbon version of the IDE (as well as built applications). (Car) Window Editor: Pushbuttons, GroupBoxes, RadioButtons, and CheckBoxes are no longer invisible if placed after a Listbox in the stacking order. (Car) Window MaxWidth/MaxHeight: fixed bug which allowed the window to be stretched one pixel larger than the specified limits. (Car) Windows now highlight when they should. (IDE) "Save As" dialog once again remembers previous project name. (IDE) AppleEvents: 'quit' AppleEvent sent to an application while it is running in the IDE now quits the application instead of crashing REALbasic. (IDE) Array Viewer: Fixed a failed assertion that occurred when arrays weren't yet dimensioned. (IDE) Array Viewer: Global Arrays of objects are now viewable and no longer cause a crash. (IDE) ArrayViewer: Colors in Array viewers are no longer 2 times intended height. (IDE) AutoRestore: now save its file in the preferences folder rather than the temp folder. Mac OS 9.1 purges the "Temporary Items Folder" at startup, making this a bad place to put this file. This change also improves the Multiple-User support since each user will have a copy their last AutoRestore project and not the last one used on the system. (IDE) Balloon Help: balloons no longer flicker every time the mouse moves while running applications in the IDE. (IDE) Build Errors: error messages are now more accurate when a build fails due to a plug-in that doesn't support the target platform, or a disk-related error. (IDE) Build progress dialog: now correctly lists name of Carbon application being built. (IDE) Build Settings: "68k" checkbox value is now saved (both in version 2.1 and in standard project files). (IDE) Build Settings: "Language" pop-up value is now saved in standard(v3) project files. (IDE) Code editor -- Hide Empty button fixed bug which caused this to hide events of controls, even when those events contained code. (IDE) Code Editor: command-key presses no longer fall through to the code editor when a running application is suspended in the debugger. (IDE) Code Editor: Autocompletion -- Ellipsis character used to show partial autocompletion is now international-savvy. (IDE) Code Editor: Autocompletion no longer gets confused and crashes when you have a folder in your project with the same name as a class. (IDE) Code Editor: Autocompletion -- no longer suggests "As" before the variable name. (IDE) Code Editor: Autocompletion -- now recognizes parameters in functions as well as in subroutines. (IDE) Code Editor: Autocompletion clears and recalculates any pending autocompletion whenever the cursor is moved (even if moved with the mouse). (IDE) Code Editor: Autocompletion no longer gets confused in certain cases involving array properties. (IDE) Code Editor: Autocompletion now knows about the InStrB and MidB functions. (IDE) Code Editor: Autocompletion now knows what to do with variables whose type is a plug-in control. (IDE) Code Editor: Autocompletion now understands user-defined functions better. (IDE) Code Editor: Autocompletion pop-up -- control arrays now appear only once, rather than once for each instance. (IDE) Code Editor: Autocompletion pop-up menu now cancels cleanly when you press Delete, Esc, etc. (IDE) Code Editor: Autocompletion pop-up no longer causes occasional crashes when it's cancelled. (IDE) Code Editor: copy-clicking an array property in the browser now inserts just the property name, without including its array size. (IDE) Code Editor: copy-clicking an item in the browser now replaces selected text in the editor, rather than prepending the clicked item to the selected text. (IDE) Code Editor: Copy-clicking no longer crashes when no source was selected. (IDE) Code Editor: Double-clicking past the end of the last line no longer causes an assertion failure (IDE) Code Editor: Double-clicking to select a word now works even when clicking the first character on a line. (IDE) Code Editor: Drag-selection scrolls correctly in all directions. (IDE) Code Editor: fixed a crash which could occur when invoking the code editor with option-tab and then copy-clicking a word in the browser pane. (IDE) Code Editor: long lines (longer than 255 characters) now scroll all the way to the right. (IDE) Code Editor: memory leak every time you closed a code editor is now fixed. (IDE) Code Editor: Navigation Buttons no longer cause a crash when revisiting a deleted method. Now, when a method or handler is deleted, it is removed from the navigation history. (IDE) Code Editor: Overloaded methods no longer confuse the IDE, causing it to jump to the wrong one as soon as you start typing. (IDE) Code editor: replacing content of a method or event handler while Hide Empty mode was turned on no longer crashes. (IDE) Code Editor: shift-click-and-drag to extend text selection now works better. (IDE) Code Editor: shift-click-drag behavior refined further. (IDE) Code Editor: Undo no longer causes bad indentation. (IDE) Color Palette: reset when you create a new project. (IDE) Constants: icon shown in browser now reflects the actual data type of the constant. (IDE) Custom Classes: derived from serial controls, timer controls and possibly others will now not only contain the custom properties the user has added but also the other properties common to the serial or timer control. (IDE) Custom Classes: Icon in the Window editor derived from parent class when subclassing instead of using the generic appearance. (IDE) Debugger: ArrayViewer: Fixed a crash when ArrayViewer closes while still having the focus. (IDE) Debugger: fixed crash which could occur when a debug session must be shut down due to a change in a source code line while running in the IDE. (IDE) Debugger: Non-local arrays are now viewable while debugging (click view in their parent object viewer) (IDE) Debugger: Singles are now displayed properly in the object viewer. (IDE) Dialogs: fixed button captions in several dialogs where "Add..." had inadvertently been changed to "Create", and "Edit..." to "Modify". (IDE) Edit Menu: last few menu items had incorrect balloon help; now fixed. (IDE) Error handling: crash which occurred when a close event handler called MsgBox, while an application was being terminated due to an unhandled exception, now fixed. (IDE) File dialogs: fixed bug which caused the dialog asking if you want to save the previously open project to appear twice when using the "Open" menu command. (IDE) File Format: database project items no longer lose their settings when saved in the new file format. (IDE) File Format: fixed a bug which caused the IDE to freeze when saving a string property larger than 32K. (IDE) File Format: fixed a bug which caused the IDE to hang while reading a new (v3) format file containing a CFM plugin. (IDE) File Reading: project files with a bogus default window (corrupted) are now handled more gracefully. (IDE) File Reading: projects with corruption that was causing some modules or classes to be inaccessible can now be read because additional error checking allows REALbasic to recover projects. (IDE) Help Key: no longer triggers a "command-1" shortcut in running applications. (IDE) Input Manager support: fixed a bug which sometimes required you to press the Delete key twice to delete a control in the IDE while using the Input Manager (in Japanese, for example). (IDE) Language Reference: button no longer toggles between "Go" and "Search" when the reference window is deactivated (i.e. in the background). (IDE) List box: ColumnCount and ColumnWidth now immediately update the appearance of the control in the window editor to reflect user settings of in the properties window. (IDE) List box: contents no longer appear bottom justified when the number of items was less than the total visible. (IDE) List box: headers taken into account when calculating the vertical scrollbar (IDE) List box: headings no longer show in the Window editor when hasHeading is set to false and the initial value is changed. (IDE) List box: resizing a list box adjusts its scrollbars. (IDE) Locked Project: overwriting a locked project file is no longer allowed. (IDE) Memory leak: Edit fields no longer leak four menu items per run. (IDE) Memory leak: Fixed two usually-minor memory leaks (one unhandled exception, one application object) while running applications repeatedly in the IDE. (IDE) Memory leak: project item (such as a picture) memory is now released when it is deleted from the project, or when the project is closed. (IDE) Memory usage: leaked objects (usually caused by circular references in user-written code) memory usage now cleaned up when the next run begins. (IDE) Menu Item: Copy And Append's keyboard shortcut has been re-assigned to Shift-Cmd-C to avoid a conflicts with the "New Constant" which also used Option-Cmd-C." (IDE) Menus: Fixed a problem where selecting a window in the window menu would activate a different window or do nothing at all. (IDE) Menus: Relocating items when a project is loaded now enables the "Save" menu item. (IDE) Menus: The stack menu no longer appears in the bottom of the window list during debugging You can still get to it through the window menu, just use Hide/Show Stack (IDE) New File Format: now correctly stores a default window setting of . (IDE) New File Format: now correctly stores the interfaces of a class. (IDE) Object viewer and Array Viewer: hyperlink "View" hotspots in Object viewers and Array viewers now shift appropriately when the window is resized. Previously one would have to click to the right of the word when the window was diminished from its original size. (IDE) Online Reference: clicks in the scroll bar no longer "fall through" to a code box behind the scroll bar. (IDE) Online Reference: fixed a problem which caused the reference to jump to the wrong topic, showing instead the previous or next topic alphabetically. (IDE) Online Reference: paging with the scroll bar now scrolls the content area by the right amount. (IDE) Online Reference: Pressing the Go button after a search has failed will no longer display "search failed" in the left column but instead jump to the appropriate spot in the list of themes. (IDE) Plugin API -- REALinRuntime: fixed a bug which caused this to sometimes incorrectly return true for a control in an IDE view editor window. (IDE) Plug-in Support: changed management of the resource chain such that plugins are more likely to be able to access their resource fork without explicitly asking for it. Plugin developers should not rely on this, however; follow the new guidelines in the plug-ins SDK. (IDE) Plug-ins: "Close" method of a Plug-in control is now called before the instance data is released, rather than after." (IDE) Plug-ins: Floating-point properties of plug-in controls now display correctly in the Properties window. (IDE) Project item import: imported classes and windows in v3 format no longer lose their references to other classes (for example, the Super of a control would be lost). (IDE) Project Settings: changes to project settings now cause the Save command to be enabled. (IDE) Project window -- Locating Items when re-locating an external item in the project, the dialog now uses Navigation Services (when available). (IDE) Project Window: importing a window or class no longer causes the project's default window to change to "none". (IDE) Project Window: Moving items from one folder to another in the project window can now be undone (Cmd-Z) and redone. (IDE) Project window: Pictures -- when re-locating a picture file in the project, the dialog now allows selection of any file type (since it may be anything supported by QuickTime). (IDE) Project Window: Relocating a project item now marks the project as needing to be saved. The "Save" menu-item will be enabled in this case and REALbasic will prompt you to save the project before quitting. (IDE) PropertiesWindow: Property Panes can no longer be shorter than the space they need. e.g. if you take a editfield and type in some text, and then change the textSize Property to a value of 4 the Property Pane won't shrink to that size since its caption and the widget at the end won't fit. (IDE) PropertiesWindow: The "Edit" button has been made slightly smaller so that it doesn't butt up against the edge of the scrollbar. (IDE) Registration Reminder: "Quit" button now uses the same string as the IDE's Quit Menu item to allow for easier Localization. (IDE) Registration: A more helpful message is displayed in the Previous Serial Number field if an old copy is already installed. (IDE) Registration: fixed a problem which caused some REALbasic 2 serial numbers to be considered invalid as a base for upgrading to REALbasic 3. (IDE) Save Changes Dialog: Made Save changes dialog a moveable modal, so users can't display the dialog multiple times. (IDE) Save/Create File dialogs now have more accurate & informative prompts. (IDE) SaveAs dialog: re-adjusted the non-NavServices Save As dialog for international users. (IDE) Saving: errors when saving now present an error message rather than failing silently. (IDE) Scriptable IDE: build event now waits for the build to complete before returning without causing REALbasic to quit before the build is finished. (IDE) Scrollbars/Sliders: Now display properly when loaded from a file, and after the Max is resized to fit a value. (IDE) Show Hidden Methods button: no longer crashes when used in a class with no controls. (IDE) Stationery: opening a stationery pad, the IDE now properly calls the project "Untitled" and considers it unsaved, just as creating a fresh project with the New command does. (IDE) Stationery: REALbasic is now stationery-aware, so when you double-click a stationery pad in the Finder, the Finder no longer makes a document copy of it before opening it in REALbasic. (IDE) Tab panel: compiling no longer causes invalid, unusable Tab panels in the IDE after a build. (IDE) Tool bar: plugins which register multiple controls now get the correct icons in the toolbar. (IDE) Tool bar: stray highlighting caused by moving and clicking very quickly is now fixed. (IDE) Toolbar: fixed a bug which could cause occasional crashes on some systems. (IDE) Viewers: "string View" in the Object viewer and ArrayViewer now comes from a resource and so is international savvy. (IDE) Viewers: Array viewers can now view arrays of objects. (IDE) Viewers: Array viewers no longer crash when attempting to show 2D and higher dimensional arrays. (IDE) Viewers: Object viewers and Array viewers now respond to the appropriate menu item or their keyboard equivalents for Close and Zoom. (IDE) Window editor: Alignment lines flicker less on slower machines. (IDE) Window editor: Alignment lines no longer occasionally leave stray pixels behind. (IDE) Window editor: custom classes in a window can now be duplicated (or copied and pasted) without crashing. (IDE) Window Editor: While typing in the caption or text property of a control and then changing another property the text of the control will no longer revert to its old state in the window editor. This change applies to Pushbuttons, Editfields, GroupBoxes, CheckBoxes, RadioButtons, and StaticTexts. (IDE) XML Export: "" tag has been replaced with an "" top-level tag that encloses the rest of the file, per the XML specification. (Mac) Built Applications: applications using plug-ins which use sockets are now built correctly. Previously, the built application would not have the Open Transport code it needed unless the project also made use of the Socket class. This fixes, for example, using postgreSQL in stand-alone Mac applications. (Mac) Command-Period: both the command-period sequence (to trigger UserCancelled in your REALbasic code) and Command-shift-period (to switch to the REALbasic debugger) now work on non-QWERTY keyboard layouts. (Mac) Control activation: controls are now deactivated when the window is deactivated. For most controls, this means they are drawn as if disabled. Static texts are drawn in a color close to gray but retaining some of their original color. (Mac) Control Activation: cosmetic errors occurring when the activation state of a control was changed, while it was deactivated, have now been fixed. (Mac) Control enabling: controls which previously did not change their appearance to reflect the state of their "enabled" property, now do so. These include the progress bar, disclosure triangle, chasing arrows, separator, and image well. (Mac) CPU Usage: in order to reduce sluggishness in places such as EditFields, we've reduced the maximum sleep time from 20 ticks to 5 ticks. This increases the CPU usage of your programs only slightly, but produces a much more responsive feel when typing. (Mac) Date class: a work around for a MacOS system bug involving date records with day=0 has been added. Operations such as "d.day = d.day-1" are now safe. (Mac) Edit Field: single-line Edit Fields now use a line height consistent with that provided by system defaults, even after assigning new text or resetting the font. One benefit is that text in the Properties window no longer jumps up a pixel when you enter the field, as happened in recent alphas. (Mac) EditField.ScrollPosition: assigning ScrollPosition of a multi-line Edit field without a scroll bar no longer crashes. (Mac) EditField.TextFont and related properties: previously, the exact behavior of assignment to TextFont, SelTextFont, TextColor, SelTextColor, TextSize, and SelTextSize was undefined, and varied quite a bit between single-line and multi-line edit fields. The behavior has now been unified as much as possible, and is defined as follows (where "e" is an EditField): "e.text = X" replaces the entire contents of the field with X. The font, size, and color are uniform and match the values last set with e.textFont, e.textSize, and e.textColor, or if these haven't been used, the settings in the IDE. (Note that using e.selTextFont etc. may change the entire appearance of the text -- always true if the field is not styled -- but does NOT change the "default" settings used when the whole text is replaced with "e.text = X".); "e.textFont = X" in a styled or plain field changes the font of the entire field to the given value. It also resets the "default" font, size, and style which will be used if the whole text is replaced.; "e.selTextFont = X" in an plain field changes the font of the entire field to the given value.; "e.selTextFont = X" in a styled field changes the font of the selected text to the given value.; Text size and color work just like the font. CAVEAT: font, size, and style are stored in a single structure internally, so changing any of them by assigning to either TextFont or TextSize will cause the current settings for font, size, and style to ALL be stored as the default. Text color is stored separately. But do not rely on this behavior; it's best to set the font, size, and color explicitly when you want to change them for the whole field. (Mac) EditField: multi-line EditFields without scrollbars no longer scroll the text to the bottom of the visible field when you start typing. (Mac) EditFields: fixed a bug introduced in 3.0b2 which caused the Home, End, Page Up, and Page Down keys to malfunction in multi-line EditFields. (Mac) Fixed a memory leak which showed up, for example, in Picture masks. (Mac) Global floating windows: color depths no longer really low. (Mac) Global floating windows: once again work with MacOS versions older than 8.5, fixing a bug introduced in 3.0a5. NOTE: Global floating windows have under these older versions of MacOS have a very low color depth, due to the Mac OS itself. (Mac) Graphics.StringWidth: now works correctly for strings longer than 255 characters. (Mac) IDE: Online Reference now scrolls to the bottom. (Mac) Listbox.ScrollPosition: assignment of scrollPosition when new value was beyond the number of rows at the last refresh no longer fails. (Mac) MacOS 8.0/8.1: both built applications and the IDE run again on these versions of MacOS, thanks to the demise of a bug introduced in 3.0a04. (Mac) Menu Command Keys: fixed problem with commands keys not interpreting constants in the IDE. (Mac) OpenPrinter: Bug (introduced in 3.0a09) which caused this function to crash or produce immortal print progress dialogs has now been fixed. (Mac) ParseDate method: d.totalseconds = d.totalseconds no longer required to force the parsed date to update its properties. (Mac) Pop-up menu: memory leak fixed. (Mac) SelectFolder: Navigation Services dialog is now movable modal, and allows background windows to refresh. (Mac) Sliders and Scroll bars: Setting the PageStep property of for a scroll bar in code will now re-adjust the proportional scroll bar accordingly. (Mac) Sliders: Vertically Oriented Sliders now behave correctly when the user clicks in the track above and below the slider. (Mac) Socket.Lookahead: now works without crashing in built applications (as well as in the IDE). (Mac) Sound class: looping sounds memory leak fixed. (Mac) Sounds: fixed a bug which caused sounds to sometimes play incorrectly (play the wrong sound, or a horrible screeching noise). (Mac) Sprite surface: collision detection on the pixel level now works on Mac OS. (Mac) Sprite surface: sprites created from cicn resources no longer cause crash. (Mac) Timers: fixed a bug which caused timers with a period in the 17-50 ms range to fire too slowly on certain systems. (That bug was introduced in 3.0b2.) (OSX) Built applications: now correctly detect when they are running under Aqua, and adjust their appearance accordingly. (OSX) Date objects are now initialized to current date under OS X. (OSX) Dates: TotalSeconds property now can now be set under Carbon. (OSX) Focus rings now erase properly when a control loses the focus. (OSX) Global floating windows: now work properly under Carbon/OS X. (OSX) IDE: fixed bug which caused last two commands in the Edit menu to invoke the wrong dialogs. (OSX) List Box: header has proper Aqua appearance. (OSX) Menu item: "Hide" is now named "Hide REALbasic" per OS X standards. (OSX) Menu item: Quit command (in IDE) now appears in Application menu per OS X standards. (OSX) Plug-in Compiling: building applications that call plug-in functions (such as Shell.Execute) under Mac OS X no longer suddenly quit. (OSX) Plug-ins: External plug-ins are now found in the "plug-ins" folder next to the REALbasic application. (OSX) Plug-ins: we've added a work-around for a bug in MacOS X (Public Beta) which was causing intermittent crashes while loading plug-ins. Affects both the IDE and built applications. (OSX) Progress bars: animate even when timers or threads are active. (OSX) Progress bars: Deleting progress bars in OS X Window editor now actually deletes them, instead of leaving "Zombie" progress bars. (OSX) PropertiesWindow: Now looks much better under Aqua. Property Panes don't overlap each other and don't overlap the scrollbar. (OSX) Stability: fixed bug which caused the IDE's or built application's resource fork to be inaccessible on some versions of OS X. (Actually more of a work around for an Apple bug, but still...) (OSX) Window BackgroundColor: now implemented for Carbon. (Does not yet work properly under OS X). (OSX) Window.BackgroundColor: now appears correctly under OS X. (Win) Application icon: now appears in the title bar, instead of the default Windows one. (Win) Application.OpenDocument Event: Windows applications can now receive OpenDocument events. (Win) Arrays: arrays are no longer dynamically allocated when needed. If you want to allocate a 10000 item integer array, the whole array will be allocated instead of on an "as needed" basis. This should fix the slow array problem when first accessing the array. (Win) Arrays: removed changes from b2 that allocated the entire array. To achieve the same effect, just set the last element of the array, so that the whole array is allocated. (Win) Arrays: were not being freed when out of scope, this is now fixed. (Win) BevelButton: assigning a System font name should now map to Window's MS Sans Serif font. (Win) BevelButton: no longer leak Win32 System Resources, and GDI Resources when refreshing themselves. (Win) BevelButtons: Bevel and ButtonType properties can now be set via code. (Win) Canvas: Canvases now draw in their correct location. (Win) CheckBox, RadioButton, and ChasingArrow: will now inherit the background color of the parent Window. (Win) Clipboard.Picture: You can now set picture data to the clipboard. (Win) Control Cloning: cloned controls are now visible. Previously they were created, but didn't appear unless they were cloned on a canvas. (Win) Controls: Disclosure Triangles and Pop-up Arrows now refresh correctly and have transparent backgrounds on Win32. (Win) Controls: Refreshing controls now behaves as expected (e.g., Canvas1.refresh). (Win) Controls: Various controls including, but not limited to push buttons, checkboxes and radio buttons now no longer receive clicks when disabled. (Win) data types: single to integer conversion problem fixed. (Win) DataBase.dateColumn: now implemented. (Win) Database: REAL DB Double Fields: are now converted properly to little endian. (Win) Date.AbbreviatedDate: now returns with the correct abbreviated date format string. (Win) Date.Day: when the day that the user is setting is beyond the end of the month, the day will now return the day of the next month that it falls under. Similarly, if the day that the user is setting is before the beginning of the month, the day will return the last day of the previous month. (Win) Date.Month: when the month that the user is setting is beyond the end of the year or before the beginning of the year, the year will be incremented or decremented accordingly, just like the Mac. (Win) Date: negative months should now behave the same on Windows as they do on the Mac. Also, setting the year will now work even if you're on a leap day. (Win) Declares: fixed problem with using MemoryBlocks in declares. (Win) Declares: fixed weird behavioral problems when calling declared methods. Previous workarounds such as having a useless line calling str() are no longer necessary. (Win) Disclosure Triangle: No longer crashes when clicked. Crashes used to occur only on systems with QuickTime installed. This bug was introduced Aug 15 2000. (Win) Drag and Drop: Dragging from a multi-line edit field no longer causes crash. (Win) Drag and Drop: dragging multiple items is now possible. (Win) Drag and Drop: folderitems -- controls now accept folder items. (Win) Drag and Drop: MacData -- controls now accept MacData. (Win) Drag and Drop: now shows a boxed outline to indicate the dimensions of your drag object. (Win) Drag and Drop: pictures -- controls now accept picture drops. (Win) Drag and Drop: removed a debug output string from compiled apps. (Win) Drag and Drop: text -- controls now accept text drops (Win) Edit Field: acceptTabs property now works for multiline and single line editfields. If acceptTabs is false, it behaves as previously, i.e. tabs to the next control. (Win) Edit Field: invisible EditFields no longer fire LostFocus and GotFocus events. (Win) Edit field: Now behave correctly in their scroll bar and border region when overlapped with a canvas control. (Win) Edit field: SelStart assignment bug fixed; it now works correctly and just like the Mac version. Caveat: under Win32, a text selection is visible only in the Edit field which has the focus. (This is a Win32 system difference, not related to REALbasic.) (Win) Edit Field: SelTextColor property now returns color correctly. (Win) Edit Field: should now all receive changed (text/selection) events. (Win) Edit Field: TextFont property Edit Field updates correctly at start up to handle symbol encoded fonts. (Win) Edit Field: TextStyleData property now implemented, but is not binary equivalent to the Mac TextStyleData. This means that you should not create your own style data from a string and pass it to SetTextAndStyle, since they are not equivalent on both platforms. Also implemented SetTextAndStyle, which previously did nothing. (Win) EditField.KeyDown: getting the ASC of the Key parameter now works. (Win) EditField.KeyDown: now passes arrow keys, insert, delete, home, end, page up, and page down keys to the KeyDown event. These are coded the same as the Mac key codes. (Win) EditField.TextFont and related properties: behavior now matches that of Mac OS; This also fixes the EditField Appearance background colors. EditField.TextFont and related properties: previously, the exact behavior of assignment to TextFont, SelTextFont, TextColor, SelTextColor, TextSize, and SelTextSize was undefined, and varied quite a bit between single-line and multi-line edit fields. The behavior has now been unified as much as possible, and is defined as follows (where "e" is an EditField): "e.text = X" replaces the entire contents of the field with X. The font, size, and color are uniform and match the values last set with e.textFont, e.textSize, and e.textColor, or if these haven't been used, the settings in the IDE. (Note that using e.selTextFont etc. may change the entire appearance of the text -- always true if the field is not styled -- but does NOT change the "default" settings used when the whole text is replaced with "e.text = X".); "e.textFont = X" in a styled or plain field changes the font of the entire field to the given value. It also resets the "default" font, size, and style which will be used if the whole text is replaced.; "e.selTextFont = X" in an plain field changes the font of the entire field to the given value.; "e.selTextFont = X" in a styled field changes the font of the selected text to the given value. Text size and color work the same as the font does. (Win) EditField: fixed problem with disabled EditFields not updating the text color when enabled. (Win) EditField: will now accept double clicks and highlights the word. (Win) EditFields: fixed problem with clicking on the first 4 or 5 pixels of an EditField. (Win) Events: Mouse Down and Action Events now occur in the proper order when controls are overlapped, and pass through or don't pass through depending on user code, or defaults. Ramifications: You can build your own overlapping custom canvas controls on Windows; You can put a canvas on top of a list box or edit field to catch events (Win) Exceptions are now handled properly on Windows. Exception handlers get called.; Exceptions are passed up the calling chain.; Win32 stack size is 896k, using more now causes a stack overflow exception. (Win) Exceptions: fixed problem with exceptions not getting caught (especially in Open events). (Win) Exceptions: fixed the last remaining exceptions case. This example should now work. (Win) Failed Assertions: These no longer fail silently under Windows. Please report any you find in the usual manner. (Win) Floating Windows: appear as a topmost Window, i.e. always on top of any other regular Window. (Win) Folder Item: memory leak fixed where instances of an object were not being freed when out of scope. (Win) Folder Item: OpenStyledEditField and SaveStyledEditField methods now properly save/load styled text. (Win) FolderItem.Count: fixed problem with counting the number of files in your root volumes. (Win) FolderItem.Delete: Empty folders can now be deleted under Windows. (Win) FolderItem.Item: Cache now updates to reflect files being moved in/out of a folder. (Win) FolderItem.Item: fixed problem with two trailing backslashes appearing in pathname. (Win) FolderItem.Item: the items in a folder are not cached as frequently as before, so accessing the items in a folder should be quicker. (Win) FolderItem.Name: introduced in the last alpha, which duplicated the filename string so that the filename was repeated twice i.e., renaming a folder "NewFileName" gave it "NewFileNameNewFileName" instead. (Win) FolderItem.OpenAsSound: Is now implemented under Windows and uses .wav files. (Win) FolderItem.Parent: Parent path should return all valid directories instead of empty strings at times. (Win) FolderItem: Fixed problem with appending .jpg to files when saving as JPEG when the extension ".jpe" is already present. (Win) FullScreen: works for SDI and MDI applications, and now hides the border so it's less visible on multiple display monitors. (Win) GetFolderItem: Was not returning nil for invalid folders whose parent path is invalid. Now fixed. (Win) GetSaveFolderItem: Default filename is now displayed in the save dialog box. (Win) Graphics.DrawPicture: memory leak fixed. (Win) Graphics.FillOval: should now resemble an oval/circle, instead of a pear-like shape. (Win) Graphics: DrawCautionIcon, DrawStopIcon, and DrawNoteIcon methods now implemented. (Win) Graphics: DrawLine method -- fixed the "rough lines" problem introduced in 3.0a11, where lines originating from the same x,y coordinates would show up 1 pixel off. (Win) Graphics: DrawString method -- new line characters handled correctly. (Win) Group Box: EditFields, PopupMenus, and Sliders now receive events when inside group boxes. (Win) Invisible Controls: Fixed the problem (introduced in 3.0a08) where invisible controls could get mouse clicks. (Win) KeyBoard class: now returns key modifiers. Supported properties include, AsyncControlKey, AsyncOptionKey, AsyncShiftKey, AsyncCommandKey, CommandKey, ControlKey, OptionKey, and ShiftKey. (Win) KeyDown event: controls now receive CR keys (i.e. the Enter key). (Win) Line Control and Graphics.DrawLine: missing pixels bug fixed. (Win) List box: drag and drop -- fixed refresh issue when dropping an item on to a listbox. (Win) List box: editable cells now display their text while being edited. (Win) List box: EnableDrag property now works as intended, i.e. you can drag an item from the listbox to any other control. (Win) List box: endcaps now visible. (Win) List box: events -- fixed problem with change and double click events when the EnableDrag property is checked. (Win) List Box: failed assertion error if clicking on the listbox whose EnableDrag property is true fixed. (Win) List box: Fixed a refresh problem which prevented drawing on top of a list box. (Win) List box: fixed refresh problem that grayed out the listbox. (Win) List box: Headers now receive clicks again. (Win) List box: Hierarchical list boxes now highlight properly, regardless of rows alignment setting. (Win) List box: Hierarchical list boxes update correctly when expanding (Win) List box: refresh problem that prevented the listbox from updating when setting the CellCheck property in code fixed. Fixed other listbox refresh problems in the process. (Win) List box: removed focus ring when editing a cell. (Win) Listbox & EditFields: fixed a bizarre problem with editfields losing focus and win32 applications crashing. This happened with an editable listbox, but only occured in special cases. (Win) Little Arrows: No longer crashes when clicked. Crashes used to occur only on systems with QuickTime installed. This bug was introduced Aug 15 2000. (Win) MDI: Events -- Mouse events (MouseEnter, MouseMove, MouseExit) now work correctly for all controls and windows in Win32 applications using MDI. (Win) MenuBarVisible: now works under Windows. (Win) Min/Max sizing: now handles all cases. I.e., different border styles, and border widths. (Win) Modal dialogs: more than one can exist at once, even when hidden. This was also the cause of file dialogs failing to appear. (Win) MouseCursor: fixed problem with assigning a mouse cursor, it should now update immediately instead of waiting for the next Windows message to update. (Win) MouseCursor: setting custom mouse cursors now work more consistently instead of partially working for some controls, especially EditFields. Also, setting mouse cursors in a control's Open event now works. (Win) Multiple Monitors: Events -- Mouse events now work correctly in negative monitor space when using multiple monitors under Win98 and Win2000. (Win) OpenPrinter: Now prints the same size as using OpenPrinterDialog. (Win) Parent.Child: The parent and child path problems have been fixed. (Win) ParseDate: implemented. (Win) ParseDate: now properly parses 1 or 2 digit years. (Win) Picture: 1-bit transparency fixed, 4-bit and 24-bit transparency added. 2-bit and 32-bit pictures continue to map to 4bit and 24-bit pictures respectively. (Win) Picture: Odd width pictures: odd width pictures imported to your project are now stored properly, so the missing pixels at the bottom of your image are corrected. (Win) Pop-up menu: fixed a problem with moving a Pop-up menu at runtime when the Pop-up menu's parent was something other than the application window. i.e. if the Pop-up menu was on top of a canvas. (Win) Pop-up Menu: now receives focus when tabbed in to. (Win) PopupMenu.InsertRow: now inserts at the correct position within the popupmenu. (Win) PrinterSetup.PageSetupDialog: PageSetup dialog displayed, and not an Open Printer dialog. (Win) ProgressBars: Indeterminant progressbars can now be hidden. (Win) QuickTime movie: now displays in its correct position on the window. (Win) QuickTime movie: now refreshes properly when the window is moved. (Win) Rectangle Control: Missing border pixels on upper-right corner is now fixed. (Win) RGBSurface: 24-bit RGB surfaces now work on Win32 (and Mac), 32-bit RGBSurfaces are mapped to 24-bit surfaces on windows. (Win) Screen.Depth: Screen(i).Depth now returns the correct value on your Win32 primary screen. (Win) Screen: for multiple display monitors should now update properly for MDI applications. (Win) ScrollBar: should now fire events when inside a groupbox. (Win) SelectColor: now works for Win32. (Win) Self.SetFocus: focus correctly set to the parent window (clears focus from other controls). (Win) Serial.DataAvailable: this event should fire more consistently. (Win) Sliders and Scroll bars: PageStep and LineStep can now be set from code for sliders and scroll bars. (Win) Socket.DataAvailable: this event should fire more consistently, instead of being skipped sometimes. (Win) Socket.LocalAddress: fixed problem where it would return the wrong IP address. (Win) Socket.LocalAddress: returns a valid local IP address, whether you're connected or not. (Win) Socket.Poll: works, even when called in a tight loop. (For plugin authors, this fix applies to REALSocketPoll as well.) (Win) Socket.PPPStatus: returns useful information: * 0 - No PPP * 1 - Connection idle * 4 - Connecting * 5 - Connected. (Win) Socket: fixed some problems with the Poll method and error events not firing consistently. (Win) Socket: listen or connect memory leak fixed. (Win) Sound.PlayLooping: sound can now be looped. (Win) Sound.Stop: stops the sound if any are currently playing. (Win) Sound: fixed problem when a Sound object is created as a property and using OpenAsSound in one method, while playing it in another method. (Win) Sound: playing sound from a resource no longer crashes if no sound card is present. (Win) Sprite surface: collisions are now detected (at the pixel level) under Win32. (Win) Sprite surface: runs on Win32 (there are Known Issues in 3.0a05). (Win) Sprite surface: scrolling now implemented for Win32. (Win) Stability: fixed problem introduced in 3.0b3 that resulted in general instability. (Win) Static Text: now have transparent backgrounds on Win32. (Win) String functions UpperCase and LowerCase: passing an empty string no longer crashes on Win32. (Win) String/Object parameters: using string or object parameters is more stable. Previously, they may have been freeing memory that shouldn't have been freed. (Win) System colors: should now return the correct REALbasic RGB color, instead of the BGR color. (Win) System.SerialPortCount: now reports the accurate number of usable serial ports (but does not go beyond 9). (Win) Text Controls: fixed a memory leak for controls that retrieve text, such as EditField.Text. (Win) The following items now work properly and no longer corrupt memory. This memory corruption was causing unexplained crashes. Windows applications that use these controls will now be much more stable than previously. This fixed 32 known bugs, of which 15 caused crashes. Rectangle: Fixed setting/getting FillColor.; Rectangle: Fixed setting/getting BorderWidth.; Rectangle: Fixed setting/getting TopLeftColor.; Rectangle: Fixed setting/getting BottomRightColor.; Line: Fixed setting/getting BorderWidth.; Line: Fixed setting/getting LineColor.; Oval: Fixed setting/getting FillColor.; Oval: Fixed setting/getting BorderWidth.; Oval: Fixed setting/getting BorderColor.; RoundRect: Fixed setting/getting FillColor.; RoundRect: Fixed setting/getting BorderWidth.; RoundRect: Fixed setting/getting BorderColor.; RoundRect: Fixed setting/getting OvalWidth.; RoundRect: Fixed setting/getting OvalHeight.; Scrollbar: Fixed getting LiveScroll.; Slider: Fixed getting LiveScroll. (Win) Timer: fixed a problem when setting the mode to 1 in the IDE, the timer never fired. (Win) Timer: no longer consumes 100% CPU. Precision is not as high as it was previously. The precision on Win95/98 is 1/18 of a second (or 55 milliseconds), and 10 milliseconds on NT. (Win) Timers: no longer require a Window to be open to work. (Win) Val: Val("") and Val("t") now returns 0." (Win) VolumeName: Now returns valid volume name drives, this was fixed when the FoldItemParent bug was fixed. (Win) Window.Close: fixed a problem with closing an application, where an unhandled exception would sometimes occur because some controls were being deleted twice. (Win) Window.DrawInto: works on Windows. Note: if any controls are off the visible screen page or hidden by another window, DrawInto will not be able to draw those controls. (Win) Window.KeyDown: fixed bug in translating key from Windows virtual key to a Mac equivalent key. Also, pressing Shift, Ctrl, or Alt, should not trigger the KeyDown event anymore. (Win) Window.KeyDown: key code is now more consistent with the Mac key code, especially for extended keys, like arrow keys. (Win) Window.visible: setting the visible property of a Window to true" will now display the Window." (Win) Window: fixed problem with unhandled exceptions error at start up, since some of the events were being fired too soon. (Win) Window: fixed problem with windows disappearing behind the main window. (Win) Window: fixed the ordering of events being fired, so the Open event should fire before the Activate event. (Win) Window: MinWidth/MinHeight, MaxWidth/MaxHeight should now work under windows. (Win) Window: MouseDown fires again. This broke in 3.0a11. (Win) Window: Refreshing windows no longer refreshes the desktop window. (Win) Window: RefreshRect now only refreshes the rectangle in question and not the window and the desktop. Various bug fixes caused these workarounds to fail: (All) PostgreSQL dates: the previous trick of using NativeValue to get a human-readable string from a date column no longer works; NativeValue now returns an internal binary representation. Use StringValue (which now works as it should) instead. (Win) Events: Mouse Down and Action Events -- placing a canvas underneath a control to catch its events will no longer work, place the canvas above the control, just as you would on the Mac. The following known issues still exist in this release (All) Sprite surface: Out of memory condition sometimes fails to exit gracefully (i.e., crashes). Assign more RAM to IDE and built applications. (Car) Suspend Run: command-shift-period sequence (to switch to the REALbasic debugger) still doesn't work under Carbon or Mac OS X. (IDE) Building: You can't build a Mac Classic and a Mac Carbon at the same time, since they're two different files but you can only set one file name. Just build one at a time for now, and append something meaningful to the Carbon version's name or use AppleScript to automate it. (IDE) Custom Classes: Custom Serial controls won't use a pop-up to select port, parity etc. You have to use the integer equivalent. (IDE) Custom Classes: Custom Timers and Serial controls will not retain default values. (IDE) Debugger: Viewers -- arrays with more than one dimension are still not viewable from IDE's debugger. (IDE) Project window: Folders aren't yet exportable via Menus. (IDE) Project Window: If a folder in the finder already exists with the same name as the one you are dragging nothing will happen. (I.e. the folder will not be replaced and no message will appear to warn you of this) (IDE) REAL Database: doesn't support field options ("Primary" and "Not Null" -- the latter acts as if it's supported, but the option isn't saved). This is not a new issue, but since the schema editor has changed it seemed worthy of mention. (IDE) Sprite surface: when loading a 2.1 project, Sprite surface will have height and width of 0, making it impossible to see. Find it with Select All (or use the tab key), then adjust height and width. (Mac) PrinterSetup: due to a long-standing limitation of Apple's Laserwriter 8 printer driver, the only resolutions available via this driver are 72 and 300 dpi, even if the printer really supports other resolution. (Mac) Text: Ampersand symbols in constants behave as they always have, i.e., Mac and Windows are different. (OSX) Progress bars: Don't try to overlap two progress bars, or put another control on top of a progress bar. It looks bad. This is not our fault. (OSX) When controls are too close together, and one loses the focus, the border of the neighboring control may not get refreshed correctly. Work-around: put a few extra pixels between controls. (Win) Drag and Drop: doesn't work with overlapped controls. (Win) Groupboxes and cloned (at runtime) controls will not display their tool tips. (Win) Sprite surface: colors are somewhat off in 8-bit mode due to palette differences. Windows and the Mac OS use different 8 bit color palettes. (Win) Sprite surface: slower than the Mac when changing the sprite image often in a single frame